//
//  StatusListViewModel.swift
//  SinaWeibo
//
//  Created by 周小伟 on 16/8/25.
//  Copyright © 2016年 周小伟. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD
import SDWebImage

class StatusListViewModel: NSObject {
    class func loadData(since_id since_id:Int,max_id:Int,finished:(array:[Status]?)->()){
        let urlString = "2/statuses/home_timeline.json"
        guard let token = UserAccountViewModel().token else{
            SVProgressHUD.showErrorWithStatus("您暂未登录")
            return
        }
        
        var parameters = ["access_token":token]
        
        if since_id > 0{
            parameters["since_id"] = "\(since_id)"
        }
        
        if max_id > 0{
            parameters["max_id"] = "\(max_id - 1)"
        }
        NetworkTools.sharedTools.requestJsonDict(.GET, urlString: urlString, parmaters: parameters) { (result, error) in
            if error != nil{
                finished(array: nil)
                return
            }
            
            if let array = result!["statuses"] as? [[String:AnyObject]]{
                var list = [Status]()
                for item in array{
                    let s = Status(dict: item)
                    list.append(s)
                }
                
                StatusListViewModel.cacheStatusImage(list,finished:finished)
            }
        }
    }
    
    private class func cacheStatusImage(array:[Status],finished:(array:[Status]?)->()){
        if array.count == 0{
            finished(array: nil)
            return
        }
        
        let group = dispatch_group_create()
        
        for s in array{
            if let imageurls = s.pictureURLs{
                if imageurls.count != 1{
                    continue
                }
                for url in imageurls{
                    dispatch_group_enter(group)
                    //下载图片开始
                    SDWebImageManager.sharedManager().downloadImageWithURL(url, options: [], progress: nil, completed: { (_, _, _, _, _) in
                        print("单张图片下载完成")
                        
                        dispatch_group_leave(group)
                    })
                }
            }
        }
        
        dispatch_group_notify(group, dispatch_get_main_queue()) { 
            print("所有的异步图片下载完成")
            finished(array: array)
        }
    }
}
